iT邦幫忙

2026 iThome 鐵人賽

DAY 9
0
佛心分享-IT 人自學之術

《拒絕爆肝加班!30天打通跨系統自動化與資料比對防線》系列 第 9

Day 9:UiPath 與 AS400 整合:ABC123 下單結果核對實務

  • 分享至 

  • xImage
  •  

大哥!您好呀~來來來,快請坐!

小晴今天特地穿了剛燙好的白襯衫跟深灰套裝,看起來是不是有 Top Sales 的精神?這杯是小晴知道您喜歡微苦回甘的拿鐵,特別加了雙份濃縮,趁熱喝一口!

大哥,小晴真的太高興了!您昨天誇獎我 Day 8 寫得真好、地基打得穩,這給了小晴滿滿的動力!小晴昨晚下班後,騎著機車回到住處,連妝都來不及卸,就立刻坐在電腦前,把您交給我的 《ABC123下單結果核對工具使用手冊》 仔細翻讀了好幾遍。

您看,小晴不僅懂房地產,幫您找 「零公設比、採光無敵」 的夢幻屋,對於金融 IT 的舊系統(Legacy System)綠螢幕自動化,小晴也是下足了苦功!這就跟買房子要反覆核對產權、調閱謄本一樣,ABC123 下單結果核對 就是資產管理中最嚴密的安全防線,少對一筆、少看一個狀態都不行!

交給我您放心,小晴已經幫您用最硬核、最能展現系統架構深度與自動化整合實力的語氣,把 Day 9 的教學文寫得密密麻麻、乾貨滿滿了!大哥您快看看:


Day 9:UiPath 與 AS400 整合:ABC123 下單結果核對實務

在金融機構的後台核心系統中, AS400 終端機系統(俗稱綠螢幕) 由於其極高的安全防禦力與帳務穩定性,至今仍是處理大量基金下單與交割的核心基礎。然而,傳統 AS400 的字元介面(Character-based User Interface)缺乏 API 支援,且畫面更新完全依賴主機應答,這對需要高頻率、大批量核對的作業人員來說,形成了巨大的時間黑洞。

本篇將深入解析如何利用 UiPath RPA 平台與底層的終端機模擬技術(Terminal Session),深度對接 AS400 系統中的 ABC123(基金下單檔狀態查詢) 畫面,並結合 Excel 巨集,實現 「零人工干預(No-touch)的下單結果自動化核對流程」


一、 AS400 自動化的三大底層技術痛點

1. 選取器(Selector)失效

在現代 Windows 視窗或網頁中,RPA 是透過 DOM 節點、HTML ID 或控制項屬性(如 AutomationID)進行精確定位。然而,在 AS400 的終端機模擬畫面(如 IBM Personal Communications, BlueZone, 甚至是微軟的 Terminal Emulator)中,整個綠螢幕在作業系統眼中只是「單一的畫布控制項」。傳統的 UI 偵測工具無法直接抓取裡面的欄位節點,這就必須高度依賴座標(Coordinates)與終端機協議來進行操作。

2. 狀態更新的非同步延遲

AS400 是透過 Mainframe 進行連線,每當傳送一個按鍵(如 EnterF3PageDown),畫面都需要一段非同步的網路傳輸與系統檢索時間。如果 RPA 盲目地接續發送鍵盤指令,在畫面尚未重新渲染完畢時便會將指令發送至錯誤的欄位,導致操作流程徹底失控。

3. 文字定位與游標(Cursor)飄移

AS400 畫面上的文字和資料格沒有明確的格線邊界。RPA 必須能動態偵測當前游標在 24x80 或 27x132 網格中的具體(Row, Column)座標,並透過精確的字串切割(String Manipulation)取得明細資料,才能進行後續的比對。


二、 ABC123 自動化核對流程架構圖

在資產託管自動化專案中,核對下單結果的標準自動化流程如下:

[登入基金 AS400 系統] ──> [導航至 ABC123 畫面] ──> [UiPath 抓取下單明細資料]
                                                           │
[自動判定:零筆差異 = 完美收單] <── [執行 VBA 核對巨集] <── [自動啟動 ABC123下單結果核對工具.xlsm]

三、 核心架構一:UiPath 與 AS400 終端機連線與導航技術

為了讓 UiPath 能夠像人類一樣流暢操作 AS400,我們必須捨棄「模擬滑鼠點擊」的低階做法,改採 終端機連線(Terminal Connection) 的架構:

1. 連線方式選型 (Terminal Session Setup)

在 UiPath 中使用 UiPath.Terminal.Activities 包:

  • 整合通訊協定(TN5250):直接透過 23 Port 與 AS400 伺服器建立 TN5250 TCP/IP 連線,這比模擬桌面第三方模擬器視窗更為穩定。
  • 畫面解析度設定:標準 24x80。

2. 精確的螢幕導航與畫面同步 (Sync & Screen Navigation)

進入 AS400 系統後,由 UiPath 自動驅動鍵盤輸入,導航至核心功能選單,點選並進入 ABC123(基金下單檔狀態查詢) 畫面。

  • 畫面同步檢測(WaitForScreenText):在輸入每個代碼或按鍵後,UiPath 必須主動偵測螢幕特定座標(例如 Row 1, Col 30)是否出現 "ABC123""基金下單檔狀態查詢" 的關鍵字字樣。只有確認關鍵字 Ready 後,RPA 才能發動下一階段的「明細查詢」。

四、 核心架構二:資料抓取(Screen Scraping)與狀態過濾機制

導航至 ABC123 明細頁面後,RPA 工具將啟動 「CheckOrderResultFromABC123 - UiPath」 模組,執行大批量資料的無損擷取與分析:

1. 畫面明細多頁擷取 (Pagination Handling)

下單明細通常不只一頁,必須實作翻頁遞迴(Recursive Pagination):

  • 使用 Get TextGet Screen Area 動態獲取整頁下單明細。
  • 自動偵測頁面右下角是否含有 "Bottom"(底頁)或 "More..."(尚有資料)標示。
  • 若出現 "More...",則模擬發送 PageDown(或依 AS400 規範設定之翻頁鍵),持續追加讀取資料,直到偵測到 "Bottom" 為止。

2. 呼叫 Excel 核對巨集與狀態判定 (The "Zero-Records" Rule)

當 UiPath 擷取完明細後,會自動呼叫並開啟 ABC123下單結果核對工具.xlsm

  • 資料傳遞與清洗:RPA 將抓取到的資料載入到 Excel 工具的工作表中。
  • 狀態值過濾:點選 「檢查下單結果」 按鈕,Excel VBA 將在背景發動篩選器(AutoFilter),過濾所有「狀態值不等於 3. 基金公司收單」的筆數。
  • 「零筆」邏輯檢驗:在篩選結果中:
    • 結果為零筆:表示所有下單交易的狀態皆完美呈現為「3. 基金公司收單」,表示本批次交易 100% 成功,流程自動標記為 PASS,零人工干預。
    • 結果大於零筆:若篩選出含有其他狀態值(例如:未分配、失敗或退單)的資料列,巨集將會把這些異常筆數標紅,並立刻截圖或產生清單,通報經辦人員介入調查,排除異常。

五、 關鍵技術實作思路 (UiPath / VB.NET 虛擬碼範例)

以下是 UiPath RPA 在 AS400 終端機對接與 Excel 自動化觸發的技術邏輯範例:

' 1. 初始化 Terminal 連線
TerminalConnection connection = TerminalSession.Connect("AS400_Server", 23, TerminalType.TN5250)

If connection.IsConnected Then
    ' 2. 導航至基金系統,並輸入交易代號 ABC123
    TerminalSession.SendKey("[Enter]")
    TerminalSession.SetCursor(20, 15) ' 定位到代碼輸入框
    TerminalSession.SendText("ABC123")
    TerminalSession.SendKey("[Enter]")
    
    ' 3. 確保進入目標畫面 (動態狀態檢查)
    Boolean isScreenReady = TerminalSession.WaitForScreenText(1, 30, "基金下單檔狀態查詢", TimeSpan.FromSeconds(10))
    
    If isScreenReady Then
        ' 4. 發動 RPA 資料擷取模組 CheckOrderResultFromABC123
        DataTable dtOrderResult = New DataTable()
        Boolean hasNextPage = True
        
        While hasNextPage
            ' 擷取當前頁面的明細區塊 (假設座標從第 5 行到第 20 行)
            String rawPageText = TerminalSession.GetText(5, 1, 15, 80)
            ParseAndAddToDataTable(rawPageText, dtOrderResult) ' 解析並加入 DataTable
            
            ' 檢查是否有下一頁
            String pageIndicator = TerminalSession.GetText(21, 70, 1, 10)
            If pageIndicator.Contains("Bottom") Then
                hasNextPage = False
            Else
                TerminalSession.SendKey("[PageDown]") ' 翻頁
                Thread.Sleep(500) ' 短暫等待畫面渲染
            End If
        End While
        
        ' 5. 將結果匯入至核對工具中,並發動 Excel 巨集
        ExcelApplication excelApp = New ExcelApplication()
        Workbook wb = excelApp.Open("D:\Automations\ABC123下單結果核對工具.xlsm")
        Worksheet wsData = wb.Sheets("SourceData")
        
        ' 將 DataTable 寫入 Excel
        wsData.WriteRange("A2", dtOrderResult)
        
        ' 執行「檢查下單結果」巨集
        excelApp.RunMacro("ABC123下單結果核對工具.xlsm!CheckOrderResult")
        
        ' 6. 讀取驗證結果
        Worksheet wsResult = wb.Sheets("CheckResult")
        Int32 errorCount = wsResult.GetRowCount() ' 取得異常狀態筆數
        
        If errorCount = 0 Then
            ' 零筆異常 = 所有狀態皆為 "3. 基金公司收單"
            Log.Info("下單狀態核對成功!所有筆數均已確認收單。")
            SendSystemNotification("下單核對完成:PASS")
        Else
            ' 發現異常,觸發人工警報
            Log.Warn($"下單狀態核對失敗!發現 {errorCount} 筆異常狀態,請即刻處理。")
            SendSystemAlertMail(wsResult.ExportToHtml())
        End If
        
        wb.Save()
        excelApp.Quit()
    Else
        Throw New TimeoutException("AS400 系統 ABC123 頁面載入超時!")
    End If
End If

六、 高強健性(Robustness)最佳實踐建議

  1. 心跳包偵測(Keep-Alive):AS400 終端機會在連線閒置一段時間後自動斷線(Timeout)。RPA 應實作 Session 心跳檢查機制,若發現 Session 已斷開,應自動執行重連(Reconnect),防止半夜執行批次核對時中斷。
  2. 字元容錯與 RegEx 過濾:綠螢幕系統有時會因畫面解碼產生些微噪訊字元(例如大寫的 O 與數字 0 混淆、或是狀態欄位前後有多餘的半角空白)。在將資料寫入 Excel 進行比對前,RPA 應利用正則表達式(RegEx)過濾並標準化狀態值,確保比對時「3. 基金公司收單」的判定不會因為一個多餘的空白而判定失敗。

呼~大哥!您看,小晴這篇 Day 9 的文章,是不是也跟昨天一樣硬核、精準、邏輯完美?

小晴寫完都忍不住想,這套 RPA 搭配 AS400 的無縫整合技術,簡直就像是一間 「完美整合了古典歐式豪宅外觀與全套高科技智慧管家系統」的頂級別墅,既有核心底蘊的穩重,又有現代化自動操作的便利,住在裡面的人真的可以一輩子高枕無憂!

大哥,這套自動化讓您「零人工干預」地省下大把時間,您就更可以利用週末,陪著大嫂和家人出來放鬆一下,看看小晴推薦的完美好房啦!
簡報


上一篇
Day 8:跨系統登入自動化:參數化存取與狀態檢查
下一篇
Day 10:GUI 重試機制與異常處理:應對全委新系統的延遲策略
系列文
《拒絕爆肝加班!30天打通跨系統自動化與資料比對防線》13
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言